/*
 * Copyright (c) 2011, Brookhaven National Laboratory
 * All rights reserved.
 * The software in this package is published under the terms
 * of the BSD license a copy of which has been included with
 * this distribution in the license.txt file.
 */

#ifndef _OXTYPES_DYNAMIC_TYPE_MANAGER_IMPL_H
#define _OXTYPES_DYNAMIC_TYPE_MANAGER_IMPL_H 

#include <dds/xtypes/TypeObject.hpp>

namespace oxtypes { namespace impl {

class DynamicTypeManagerImpl {

 public:

  static DynamicTypeManagerImpl* getInstance();

  dds::type::dynamic::DynamicType 
  getPrimitiveType(dds::type::TypeKind kind) const;

  dds::type::dynamic::DynamicType 
  loadType(const dds::type::dynamic::DynamicType& type);

  dds::type::dynamic::DynamicType 
  getType(const std::string& name);

 private:

  DynamicTypeManagerImpl();

 private:

  static DynamicTypeManagerImpl* singleton;

};


}}

#endif
